package com.terry.test3;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 书籍叠放
 *
 * 给定一组书的长宽，并且只有当一本书的长宽同时小于另一本书的长宽时，两书才能叠放在一起，求改组书中最多能有多少本书叠放在一起
 * 输入：[[20,16],[15,11],[9,10],[10,10]]
 * 输出：3，前三本可叠放在一起
 * 我的解法：利用第一题中的排序按招书本的长进行排序，然后依次计算以每本书为底最多能放多少书，然后输出最大的那个数
 *
 * @author 小八
 * @date 2023年02月08日17:58
 */

class Rect{
    public int w;
    public int h;
    public Rect(int w,int h){
        this.w = w ;
        this.h = h ;
    }
}

public class Title5 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNextLine()){
            String line = in.nextLine();
            String[] split = line.replace("[","").replace("]","").split(",");
            Rect[] rects = new Rect[split.length/2];
            for(int i =0;i<split.length;i=i+2){
                rects[i/2] = new Rect(Integer.parseInt(split[i]),Integer.parseInt(split[i+1]));
            }
            Arrays.sort(rects,(a,b)->b.w-a.w);
            int len = rects.length;
            //动态规划 第i本书 最多能放多少书
            int[] dp = new int[len];
            for(int i=0;i<len;i++){
                dp[i] = 1;
                for(int j=0;j<i;j++){
                    if(rects[j].h > rects[i].h && rects[j].w >rects[i].w){
                        dp[i] = Math.max(dp[i],dp[j]+1);
                    }
                }
            }
            int max = 0;
            for(int i=0;i<dp.length;i++){
                max = Math.max(dp[i],max);
            }
            System.out.println(max);
        }
    }
}
